package 力扣面试经典150;

import java.util.ArrayList;
import java.util.List;

/**
 * Created with IntelliJ IEDA.
 * Description:
 * User:86186
 * Date:2024-03-14
 * Time:20:55
 */

/**
 * 力扣面试经典150:49. 字母异位词分组
 * 中等
 * 相关标签
 * 给你一个字符串数组，请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
 * 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。
 * 示例 1:
 * 输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
 * 输出: [["bat"],["nat","tan"],["ate","eat","tea"]]
 */
public class groupAnagrams {

    /*
    执行用时分布
    518ms
    击败5.01%使用 Java 的用户
    消耗内存分布
    46.70MB
    击败42.97%使用 Java 的用户
    public List<List<String>> groupAnagrams(String[] strs) {
        List<List<String>> lists = new ArrayList<>();
        int len = strs.length;
        if(len == 0) return lists;
        boolean[] used = new boolean[len];
        for(int i = 0;i < len;i++){
            List<String> list = new ArrayList<>();
            list.add(strs[i]);
            if(used[i] == true) continue;
            for(int j = i + 1;j  < len;j++){
                if(isAnagram(strs[i],strs[j])){
                    used[j] = true;
                    list.add(strs[j]);
                }
            }
            lists.add(list);
        }
        return lists;
    }
    public boolean isAnagram(String s, String t) {
        int lens = s.length();
        int lent = t.length();
        if(lens != lent) return false;
        int[] chars = new int[26];
        for(int i = 0;i < lens;i++){
            chars[s.charAt(i) - 'a']++;
            chars[t.charAt(i) - 'a']--;
        }
        for(int i = 0;i < 26;i++){
            if(chars[i] != 0){
                return false;
            }
        }
        return true;
    }*/
}
